﻿using System;
using System.Configuration;
using System.Web.Security;
using Ext.Net;
using Microsoft.Practices.ServiceLocation;
using Utpl.Syllabus.Framework;
using Utpl.Syllabus.Framework.Core;
using Utpl.Syllabus.Framework.Web.UI;
using Utpl.Syllabus.Nucleo.BL;
using Utpl.Syllabus.Recursos.Web;

namespace Utpl.Syllabus.Reconocimiento.Web
{
    /// <summary>
    /// Página para permitir el logueo a la aplicación
    /// </summary>
    [NotAuthorize]
    public partial class Login : SyPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ManejadorValidaciones.GenerarValidaciones(typeof(SyUsernameCriteria));
        }

        /// <summary>
        /// 	Función de verificación para login
        /// </summary>
        [DirectMethod]
        public void Ingresar(string usuario, string contraseña)
        {
            MembershipProvider proveedorMembresia = Membership.Provider;
            bool verificarSSL;

            try
            {
                bool.TryParse(ConfigurationManager.AppSettings[ConstantesBL.CHECKSSL], out verificarSSL);

                if (verificarSSL)
                    if (!Request.IsSecureConnection)
                    {
                        ResourceManager.AjaxSuccess = false;
                        ResourceManager.AjaxErrorMessage =
                            string.Format(Textos.ConexionNoSegura);
                        return;
                    }

                if (proveedorMembresia.ValidateUser(usuario, contraseña))
                //if (true)
                {
                   
                    FormsAuthentication.SetAuthCookie(usuario, bool.Parse(ConfigurationManager.AppSettings[ConstantesBL.COOKIEPERSISTENTE]));
                   SecurityHelper.InitializeUserAccess(ServiceLocator.Current.GetInstance<ISyllabusApplication>().GetCode(),usuario);
                    ucRolesUsuario.CargarRoles();
                }
                else
                {
                    ResourceManager.AjaxSuccess = false;
                    ResourceManager.AjaxErrorMessage = Textos.NombreUsuarioContraseñaIncorrectos;
                }
            }
            catch (Exception ex)
            {
                var resultado = ManejadorExcepciones.HandleException(ex);
                ResourceManager.AjaxSuccess = false;
                ResourceManager.AjaxErrorMessage = resultado.Message;
            }
        }
    }
}